#!/usr/bin/env bash

####################################################
# Signing compiled ruby for OSX, for details visit #
# https://rvm.io/rubies/codesign/                  #
####################################################

# Go to subprocess so we can use returns and 'use' ruby temporarily
(
  # Require Mac OS
  [[ "${_system_type}" == Darwin ]] || return 1

  # Require 10.7 - FIXME: Should be 10.7 or newer.
  [[ "${_system_version}" == 10.7* ]] || return 2

  # Find out ruby executable to sign
  typeset _ruby_name
  _ruby_name="$(sed -n '/^ruby_install_name=/ {s/ruby_install_name="\(.*\)"/\1/; p; };' "$MY_RUBY_HOME/config" )"

  # Require rvm_codesign_identity
  [[ -n "${rvm_codesign_identity:-}" ]] || {
    rvm_warn "'rvm_codesign_identity' is not set so RVM can't sign ${_ruby_name}\n" \
             "Set it in ~/.rvmrc after reading the following about OS X code signing:\n" \
             "https://developer.apple.com/library/mac/#documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html"
    return 3
  }

  # Require using ruby - btw this should not happen
  __rvm_use || {
    rvm_warn "can not use ruby which was just installed ... so can not sign it neither"
    return 4
  }

  # Sign ruby
  /usr/bin/codesign -f -s "${rvm_codesign_identity}" "$(which "${_ruby_name}")"
)
